The present invention relates to data communication using a computer network. More particularly, the present invention relates to improved methods and apparatus for transmitting data among a plurality of computer systems.
The use of the transmission control protocol/internet protocol (TCP/IP) to facilitate the transmission of information between two or more computer systems via one or more networks is well known. When a given networked computer wishes to exchange information with another networked computer, a bi-directional data flow is established to computer. Generally speaking, the information is broken into packets to facilitate the transmission process. The TCP/IP protocol suite ensures that the information to be transferred is properly segmented and sent from the transmitting computer as packets, as well as properly received and assembled into the complete data file at the receiving computer.
As is well known, the transmission control protocol (TCP) corresponds to the transport layer (layer 4) of the OSI reference model. The transmission control protocol offers, among others, stream data transfer, multiplexing, full duplex operation, segmentation and reassembly, and efficient flow control. The internet protocol (IP) is a network layer (layer 3) protocol that provides, among others, addressing information and some control information that enables packets to be routed. The IP protocol has two primary responsibilities: providing connectionless, best-effort delivery of datagrams to a network, and providing fragmentation and reassembly of datagrams to support data links with different maximum transmission units (MTU) sizes. Together, these two protocols form the core of the internet protocol suite that enables reliable delivery of data via a network.
When two computers communicate via a computer network using the TCP/IP protocol, a data structure known as a transmission control block (TCB) is typically employed to facilitate data transmission, segmentation, reassembly, retransmission, acknowledgement, and the like of datagrams in the bi-directional data flow between the communicating computers. The TCB is employed to track various parameters associated with the data transmit and receive process for a given data flow. Generally speaking, there is one transmission control block per data flow at each host computer system (i.e., the computer system involved in the communication at each end of a data flow). Each TCB is uniquely identified by its TCP source port, TCP destination port, IP source address, and/or IP destination address.
In the prior art, a transmission control block in a host computer is employed, for a given data flow, to facilitate both the transmission of data from that host computer and the receiving of data into that host computer. FIG. 1 illustrates this situation wherein a TCB 102 is employed to facilitate both the transmission and the receiving of data for host computer 104. Likewise, a TCB 106 is employed to facilitate both the transmission and the receiving of data for host computer 108. However, if a transmission control block is busy servicing a transmission request in a host computer, it is unavailable for use to facilitate the receiving of data in that host computer until the transmit task is finished. Accordingly, a bottleneck exists which limits the transmission bandwidth between the two host computers.
If the data transmission speed between host computer 104 and host computer 108 is relatively low compared to the speed at which data is processed within the host computers, this bottleneck may be tolerable. As the transmission bandwidth between host computers increase, this bandwidth bottleneck increasingly becomes a critical issue. As bandwidth approaches 1 Gbits/sec, 10 Gbits/sec, or even higher for enterprise networking, and up to 40 Gbits/sec or higher among network routers, it is clear that the bandwidth bottleneck needs to be resolved if TCP/IP is to remain a viable protocol suite for networking going forward.
In view of the foregoing, there is desired improved methods and apparatus for relieving the bandwidth bottleneck associated with the prior art transmission control block and for improving the data transmission speeds when two or more computers communicate using the TCP/IP protocol via a computer network.